classSolution { publiclongmaxSum(List<Integer> nums, int m, int k) { intn= nums.size(); longsum=0L, ans = 0L; Map<Integer, Integer> map = newHashMap<>(); for (inti=0; i < n; i++) { map.merge(nums.get(i), 1, Integer::sum); sum += nums.get(i); if (i >= k - 1) { if (map.size() >= m) ans = Math.max(ans, sum); if (map.merge(nums.get(i - k + 1), -1, Integer::sum) == 0) { map.remove(nums.get(i - k + 1)); } sum -= nums.get(i - k + 1); } } return ans; } }